#pragma once

#include "CRay.h"

enum eLightType
{
	eSpotLight,
	eDirectionalLight,
	ePointLight
};

class ILight
{
protected:
	CColor m_lightColor;
	eLightType m_type;

public:
	virtual ~ILight() {};
	virtual CColor computeColor(const CRay& ray, float dist)const = 0;
	virtual void computeShadowRay(const CVector3f& point, CRay& shadowRay, float* distance)const = 0;
	virtual void applyViewMatrix(const CMatrix& view) = 0;

	eLightType getLightType()const{return m_type;}
};